package q3;

import java.util.Random;

/**
 * 服务员
 * 继承了Runnable，代表他的一个独立的运动体
 * @author：涂有
 * @date 2017年12月1日 下午5:36:23
 */
public class Waiter implements Runnable {

	/**名称*/
	private String name;
	/**所属餐馆*/
	private Restaurant restaurant;
	/**随机数生成器，模拟服务员送菜时长*/
	private Random random = new Random();
	
	public Waiter(String name, Restaurant restaurant) {
		this.name = name;
		this.restaurant = restaurant;
	}

	public String getName() {
		return name;
	}
	
	/**
	 * 服务员送菜
	 * @author：涂有
	 * @date 2017年12月2日 下午4:35:18
	 * @param order 服务员要服务的订单
	 */
	public void send(Order order){
		order.setWaiter(this);
		try {
			Thread.sleep(random.nextInt(3000));
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		order.getCustomer().receive(order);
	}

	/**
	 * 服务员抢着去送菜
	 */
	@Override
	public void run() {
		while(true){
			try {
				Order o = restaurant.getFinishOrders().take();
				send(o);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
